import BigNumber from 'bignumber.js';

/**
 * 数字计算工具类
 */
export default {
  /**
   * 加法
   * @param {number|string} a 数字1
   * @param {number|string} b 数字2
   * @returns {number} 结果
   */
  add(a, b) {
    return new BigNumber(a || 0).plus(new BigNumber(b || 0)).toNumber();
  },

  /**
   * 减法
   * @param {number|string} a 数字1
   * @param {number|string} b 数字2
   * @returns {number} 结果
   */
  subtract(a, b) {
    return new BigNumber(a || 0).minus(new BigNumber(b || 0)).toNumber();
  },

  /**
   * 乘法
   * @param {number|string} a 数字1
   * @param {number|string} b 数字2
   * @returns {number} 结果
   */
  multiply(a, b) {
    return new BigNumber(a || 0).multipliedBy(new BigNumber(b || 0)).toNumber();
  },

  /**
   * 除法
   * @param {number|string} a 数字1
   * @param {number|string} b 数字2
   * @returns {number} 结果
   */
  divide(a, b) {
    if (b === 0 || b === '0') {
      return 0;
    }
    return new BigNumber(a || 0).dividedBy(new BigNumber(b || 0)).toNumber();
  },

  /**
   * 格式化数字，保留指定小数位
   * @param {number|string} num 数字
   * @param {number} dp 小数位数，默认2位
   * @returns {string} 格式化后的数字字符串
   */
  format(num, dp = 2) {
    return new BigNumber(num || 0).toFixed(dp);
  },

  /**
   * 四舍五入
   * @param {number|string} num 数字
   * @param {number} dp 小数位数，默认2位
   * @returns {number} 四舍五入后的数字
   */
  round(num, dp = 2) {
    return new BigNumber(num || 0).toNumber().toFixed(dp);
  },

  /**
   * 比较两个数字大小
   * @param {number|string} a 数字1
   * @param {number|string} b 数字2
   * @returns {number} 比较结果：1表示a>b，-1表示a<b，0表示a=b
   */
  compare(a, b) {
    return new BigNumber(a || 0).comparedTo(new BigNumber(b || 0));
  }
}; 